#include <stdio.h>
int main()
{
    const char *p1 = "abcdef";
    const char *p2 = "abcdef";

    // 字符串字面量（如 "abcdef"）在内存中的表现形式是一个以 \0 终止的字符数组。编译器会将这样的字符串字面量存储在程序的只读数据段中，此处存储的字符序列被认为是不可变的，它是一个常量。
    // 只读   又  不可变   编译器认为 开辟两块独立的空间完全没有必要
    // 因此两个指针指向的是同一个 字符串   是同一个空间

    char arr1[] = "abcdef";
    char arr2[] = "abcdef"; // 这是两个完全独立的数组，为了存的下字符串，需要在内存中开辟两块独立的空间来存放字符串，两块独立的空间 地址肯定不相同

    if (p1 == p2)
        printf("p1 == p2\n");
    else
        printf("p1 != p2");

    if (arr1 == arr2)
        printf("arr1 == arr2\n");
    else
        printf("arr1 != arr2\n");

    return 0;
}